<?php

class Admin_ProdutosController extends Zend_Controller_Action {

    public function init() {
        /* Initialize action controller here */
    }

    public function indexAction() {

        $produtoModel = new Application_Model_Produto();

        $this->view->produto = $produtoModel->fetchAll(
                        $produtoModel->select()->where('excluido = 0')
        );

        $busca = $this->_request->getParam('busca');
        $produto = $this->_request->getParam('produto');
    }

    public function adicionarAction() {
        require_once APPLICATION_PATH . '/modules/admin/forms/Produto.php';
        $this->view->form = new admin_Form_Produto();

        if ($this->_request->isPost()) {
            $upload = $this->view->form->pFoto->getTransferAdapter();
            $upload->addValidator('Size', false, array('0kB', '2mB'));
            $upload->addValidator('Extension', false, array('gif', 'jpg', 'png'));

            $uploaded = false;
            if ($upload->isValid()) {
                if ($upload->receive()) {
                    $uploaded = true;
                }
            }

            $this->view->form->setDefaults($this->_request->getPost());

            $data = $this->view->form->getValues();

            if ($this->view->form->isValid($data)) {

                $produtoModel = new Application_Model_Produto();

                unset($data['pFoto']);

                $data['valor'] = str_replace(array(',', '.'), '', $data['valor']);

                $id = $produtoModel->insert($data);

                if ($uploaded) {
                    $filter = new Zend_Filter_File_Rename(array('target' => APPLICATION_PATH . '/../public/produtos_fotos/' . $id . '.jpg', 'overwrite' => true));
                    $filter->filter($upload->getFileName());
                }

                return $this->_helper->redirector('index');
            }
        }
    }

    public function removerAction() {
        $id = $this->_request->getParam('id');

        $produtoModel = new Application_Model_Produto();

        $produtoModel->update(array(
            'excluido' => '1'
                ), 'idproduto = ' . $id);

        unlink(APPLICATION_PATH . '/../produtos_fotos/' . $id . '.jpg');

        return $this->_helper->redirector('index');
    }

    public function editarAction() {
        $id = $this->_request->getParam('id');

        require_once APPLICATION_PATH . '/modules/admin/forms/Produto.php';
        $this->view->form = new admin_Form_Produto();

        $produtoModel = new Application_Model_Produto();

        if ($this->_request->isPost()) {
            $upload = $this->view->form->pFoto->getTransferAdapter();
            $upload->addValidator('Size', false, array('0kB', '2mB'));
            $upload->addValidator('Extension', false, array('gif', 'jpg', 'png'));

            $uploaded = false;
            if ($upload->isValid()) {
                if ($upload->receive()) {
                    $uploaded = true;
                }
            }

            $this->view->form->setDefaults($this->_request->getPost());

            $data = $this->view->form->getValues();

            if ($this->view->form->isValid($data)) {

                unset($data['pFoto']);

                $data['valor'] = str_replace(array(',', '.'), '', $data['valor']);

                $produtoModel->update($data, 'idproduto = ' . $id);

                if ($uploaded) {
                    $filter = new Zend_Filter_File_Rename(array('target' => APPLICATION_PATH . '/../public/produtos_fotos/' . $id . '.jpg', 'overwrite' => true));
                    $filter->filter($upload->getFileName());
                }

                return $this->_helper->redirector('index');
            }
        }

        $produto = $produtoModel->find($id)->current();

        $this->view->form->setDefaults($produto->toArray());
    }

    public function visualizarAction() {
        $id = $this->_request->getParam('id');

        $produtoModel = new Application_Model_Produto();

        $this->view->produto = $produtoModel->find($id)->current();
    }

}

